package com.bjt.wms.sys.service;

import java.io.*;

import com.bjt.common.constant.BaseConstant;
import com.bjt.wms.sys.model.DeliverySheet;
import com.bjt.wms.sys.model.Employee;
import com.bjt.wms.sys.model.Material;
import com.bjt.wms.sys.model.Warehouse;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**
 * @author WenbinJi
 * <p>
 * 数据报表服务
 */
public class ExcelService {

    /**
     * 导出配货单报表
     *
     * @param deliverySheet 配货单ID
     */
    public String generateDeliverySheetExcel(DeliverySheet deliverySheet) throws Exception {
        //excel模板路径
        File fi = new File(BaseConstant.TEMPLATE_PATH + "tempDeliverySheet.xlsx");
        //读取excel模板
        XSSFWorkbook wb = new XSSFWorkbook(fi);

        //读取了模板内所有sheet内容
        XSSFSheet sheet = wb.getSheet("Sheet1");

        //在相应的单元格进行赋值
        sheet.getRow(1).getCell(1).setCellValue(Warehouse.dao.findById(deliverySheet.getWarehouseId()).getName());//仓库名称
        sheet.getRow(1).getCell(3).setCellValue(deliverySheet.getCode());//配货单号
        sheet.getRow(1).getCell(5).setCellValue(deliverySheet.getCreateTime());//创建日期

        String[] array = deliverySheet.getMaterialIds().split(",");
        int total = 0;
        for (int i = 0; i < array.length; i++) {
            int id = Integer.valueOf(array[i].split("-")[0]);
            int quantity = Integer.valueOf(array[i].split("-")[1]);

            sheet.getRow(i + 3).getCell(0).setCellValue(i + 1);//编号
            sheet.getRow(i + 3).getCell(1).setCellValue(id);//耗材ID
            sheet.getRow(i + 3).getCell(2).setCellValue(Material.dao.findById(id).getName());//耗材名称
            sheet.getRow(i + 3).getCell(5).setCellValue(quantity);//耗材数量

            total += quantity;
        }

        sheet.getRow(18).getCell(5).setCellValue(total);//合计

//        sheet.getRow(19).getCell(1).setCellValue("");//制单
        sheet.getRow(19).getCell(3).setCellValue(Employee.dao.findById(deliverySheet.getEmployeeId()).getName());//配货员
//        sheet.getRow(19).getCell(5).setCellValue("");//核对人

        //修改模板内容导出目标路径
        String filePath = BaseConstant.DOWNLOAD_PATH + File.separator + "XX医院XX科室二级仓库配货单_" + deliverySheet.getCode() + ".xlsx";
        FileOutputStream out = new FileOutputStream(filePath);
        wb.write(out);
        out.flush();
        out.close();
        return filePath;
    }
}
